/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.scrumpmt.web.producto;

import java.util.List;
import java.util.logging.Level;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.scrumpmt.domain.Proyecto;
import org.scrumpmt.ejb.ProyectoFacade;
import org.scrumpmt.web.BasicBean;
import org.scrumpmt.web.login;

/**
 *
 * @author aljiru
 */
@ManagedBean(name="listadoProyecto")
@RequestScoped
public class ListadoProductosBean extends BasicBean {
    
    private ProyectoFacade proyectoFacade = lookupProyectoFacade();

    private List<Proyecto> listado;
    private Proyecto selectedProyecto;
    
    FacesContext context = FacesContext.getCurrentInstance();
    
    login myLogin = null;
    
    /**
     * Creates a new instance of ListadoProductosBean
     */
    public ListadoProductosBean() {
        if (context != null) {
            myLogin = (login) context.getApplication().evaluateExpressionGet(context, "#{login}", login.class);
            consultaListado();
        } else {
            myLogin = new login();
        }
        
    }
    
    public final void consultaListado() {
        if (myLogin.getAdministrador()) {
            listado = proyectoFacade.findAllActivos();
        } else {
            listado = proyectoFacade.findActivosColaborando(myLogin.getNombre());
        }
    }

    public List<Proyecto> getListado() {
        return listado;
    }

    public void setListado(List<Proyecto> listado) {
        this.listado = listado;
    }

    public void seleccionarProyecto(long id) {
        Proyecto p = proyectoFacade.find(id);
        setSelectedProyecto(p);
    }
    
    public Proyecto getSelectedProyecto() {
        return selectedProyecto;
    }

    public void setSelectedProyecto(Proyecto selectedProyecto) {
        this.selectedProyecto = selectedProyecto;
    }
    
    private ProyectoFacade lookupProyectoFacade() {
        try {
            Context c = new InitialContext();
            return (ProyectoFacade) c.lookup("java:global/ScrumPMT/ScrumPMT-ejb/ProyectoFacade!org.scrumpmt.ejb.ProyectoFacade");
        } catch (NamingException ne) {
            log.log(Level.SEVERE, "exception caught", ne);
            throw new RuntimeException(ne);
        }
    }
    
    public void eliminaProducto() {
        selectedProyecto.setActivo(0);
        proyectoFacade.edit(selectedProyecto);
        if (context != null) {
            listado.remove(selectedProyecto);
        }        
    }
    
    public login getMyLogin() {
        return myLogin;
    }

    public void setMyLogin(login myLogin) {
        this.myLogin = myLogin;
    }
        
}
